//package top.xierongsheng.user.controller;
//
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.baomidou.mybatisplus.core.metadata.IPage;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import io.swagger.v3.oas.annotations.Operation;
//import io.swagger.v3.oas.annotations.tags.Tag;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.validation.annotation.Validated;
//import org.springframework.web.bind.annotation.*;
//import top.xierongsheng.code.R;
//import top.xierongsheng.code.aspect.log.Log;
//import top.xierongsheng.code.aspect.log.LogType;
//import top.xierongsheng.code.aspect.power.RequiresPermissions;
//import top.xierongsheng.user.dto.GoodsTypeDto;
//import top.xierongsheng.user.dto.groups.Create;
//import top.xierongsheng.user.dto.groups.Update;
//import top.xierongsheng.user.dto.groups.UpdateStatus;
//import top.xierongsheng.user.model.GOODS_TYPE;
//import top.xierongsheng.user.service.IGoodsTypeService;
//import top.xierongsheng.utlis.data.RandomUtil;
//
//import java.util.*;
//
//@Slf4j
//@RestController
//@RequestMapping(path = "/goodsType")
//@RequiredArgsConstructor
//@CrossOrigin
//@Tag(name = "商品类型接口")
//public class GoodsType {
//
//    private final IGoodsTypeService goodsTypeService;
//
//
//    /**
//     * 新增类目
//     *
//     * @param userId
//     * @param goodsTypeDto
//     * @return
//     * @auther 谢荣生
//     * @datetime 2021/1/6 9:36
//     */
//    @PostMapping(path = "/addGoodsType", consumes = {"application/json", "application/x-www-form-urlencoded"})
//    @Log(type = LogType.web, desc = "商品类型表-新增")
//    @RequiresPermissions("addGoodsType")
//    @Operation(summary = " 新增商品类型")
//    public R addGoodsType(@RequestHeader(name = "userId") String userId, @RequestBody @Validated(Create.class) GoodsTypeDto goodsTypeDto) {
//        GOODS_TYPE goodsType = new GOODS_TYPE();
//        goodsType.setId(RandomUtil.getUUID());
//        goodsType.setDescription(goodsTypeDto.getDescription());
//        goodsType.setName(goodsTypeDto.getName());
//        goodsType.setStatus(1);
//        goodsType.setCreateTime(new Date());
//        goodsType.setCreatorId(userId);
//        goodsType.setUpdateId(userId);
//        goodsType.setUpdateTime(new Date());
//        goodsTypeService.save(goodsType);
//        return R.ok("新增商品类型成功");
//    }
//
//    /**
//     * 更新类目信息
//     *
//     * @param userId
//     * @param goodsTypeDto
//     * @return
//     * @auther 谢荣生
//     * @datetime 2021/1/6 9:22
//     */
//    @PostMapping(path = "/updateGoodsType", consumes = {"application/json", "application/x-www-form-urlencoded"})
//    @Log(type = LogType.web, desc = "商品类型表-更新")
//    @RequiresPermissions("updateGoodsType")
//    @Operation(summary = "编辑商品类型")
//    public R updateGoodsType(@RequestHeader(name = "userId") String userId, @RequestBody @Validated(Update.class) GoodsTypeDto goodsTypeDto) {
//        GOODS_TYPE goodsType = goodsTypeService.getById(goodsTypeDto.getId());
//        if (goodsType == null) {
//            return R.fail("该商品类型不存在");
//        }
//        goodsType.setId(goodsTypeDto.getId());
//        goodsType.setDescription(goodsTypeDto.getDescription());
//        goodsType.setName(goodsTypeDto.getName());
//        goodsType.setUpdateId(userId);
//        goodsType.setUpdateTime(new Date());
//        goodsTypeService.updateById(goodsType);
//        return R.ok("更新商品类型成功");
//    }
//
//    /**
//     * 更新类目状态
//     *
//     * @param userId
//     * @param goodsTypeDto
//     * @return
//     * @auther 谢荣生
//     * @datetime 2021/1/6 9:21
//     */
//    @PostMapping(path = "/updateGoodsTypeStatus", consumes = {"application/json", "application/x-www-form-urlencoded"})
//    @Log(type = LogType.web, desc = "商品类型表-状态更新")
//    @RequiresPermissions("updateGoodsTypeStatus")
//    @Operation(summary = "更新商品类型状态")
//    public R updateGoodsTypeStatus(@RequestHeader(name = "userId") String userId, @RequestBody @Validated(UpdateStatus.class) GoodsTypeDto goodsTypeDto) {
//        List<String> ids = Arrays.asList(goodsTypeDto.getId().split(","));
//        List<String> errMap = new ArrayList<String>();
//        for (String id : ids) {
//            GOODS_TYPE goodsType = goodsTypeService.getById(id);
//            if (goodsType == null) {
//                errMap.add("[" + id + "]该商品类型不存在");
//                continue;
//            }
//            goodsType.setUpdateId(userId);
//            goodsType.setUpdateTime(new Date());
//            goodsType.setStatus(goodsTypeDto.getStatus());
//            goodsTypeService.updateById(goodsType);
//        }
//        if (errMap.size() > 0) {
//            return R.fail("商品类型状态更新失败").zip("data", errMap);
//        } else {
//            return R.ok("商品类型状态更新成功");
//        }
//    }
//
//    /**
//     * 分页获取类目列表
//     *
//     * @param userId
//     * @param key
//     * @param status
//     * @param pageNo
//     * @param pageSize
//     * @return
//     * @auther 谢荣生
//     * @datetime 2021/1/6 9:20
//     */
//    @GetMapping(path = "/getGoodsTypeListPage")
//    @RequiresPermissions("searchGoodsType")
//    @Operation(summary = "分页查询获取商品类型列表")
//    public
//    R getGoodsTypeListPage(@RequestHeader(name = "userId") String userId, @RequestParam String key, @RequestParam Integer status, @RequestParam(defaultValue = "1") Integer pageNo, @RequestParam(defaultValue = "10") Integer pageSize) {
//        IPage<HashMap> page = goodsTypeService.getGoodsTypeListPage(new Page<>(pageNo, pageSize), status, key);
//        List<HashMap> userIPage = page.getRecords();
//        Map baseReturn = new HashMap();
//        baseReturn.put("pageNo", page.getCurrent());
//        baseReturn.put("pageSize", page.getSize());
//        baseReturn.put("total", page.getTotal());
//        baseReturn.put("list", userIPage);
//        return R.ok().zip("data", baseReturn);
//    }
//
//    /**
//     * 根据类目id获取类目信息
//     * @param userId
//     * @param id
//     * @return
//     * @auther 谢荣生
//     * @datetime 2021/1/6 9:20
//     */
//    @GetMapping(path = "/getGoodsTypeInfoById")
//    @Operation(summary = "根据商品类型id获取商品类型信息")
//    public
//    R getGoodsTypeInfoById(@RequestHeader(name = "userId") String userId, @RequestParam String id) {
//        if (id == null || id.trim().isEmpty()) {
//            return R.fail("id不允许为空");
//        }
//        GOODS_TYPE goodsType = goodsTypeService.getById(id);
//        if (goodsType == null) {
//            return R.fail("商品类型不存在");
//        } else {
//            return R.ok("获取商品类型信息成功").zip("data", goodsType);
//        }
//    }
//
//    /**
//     * 获取所有已启用类目
//     *
//     * @param userId
//     * @return
//     * @auther 谢荣生
//     * @datetime 2021/1/6 9:19
//     */
//    @GetMapping(path = "/getGoodsTypeListAll")
//    @Operation(summary = "获取所有已启用的商品类型")
//    public
//    R getGoodsTypeListAll(@RequestHeader(name = "userId") String userId) {
//        List<GOODS_TYPE> goodsTypeList = goodsTypeService.list(new QueryWrapper<GOODS_TYPE>().lambda().eq(GOODS_TYPE::getStatus,1));
//        return R.ok().zip("data", goodsTypeList);
//    }
//
//}
